#include "dupla.h"
#include "./../defines.h"
#include <iostream>
#include <cassert>


using namespace std;

void test1(){
	Dupla<int, string> d(0,"TEST");
	assert(d.x==0);
	assert(d.y=="TEST");
}

void test2(){
	const int p = 3;
	int q = 4;
	Dupla< int, int> e(q,p);
	assert(e.x == q);
	assert(e.y == p);
	q=8;
	assert(e.x != q);
}

void test3(){
	Dupla < int, int > d(3,6);
	Dupla < Dupla<int, int> , bool > dd(d,false);
	assert(dd.x==d);
	assert(dd.x.x==3);
	d.x=45;
	assert(dd.x != d);
	assert(dd.x.y == d.y);
	assert(d.x == 45);
	
}

int main() {
	RUNTEST(test1, Chequea el constructor);
	RUNTEST(test2, Chequea que los elementos se copian y no quedan por referencia);
	RUNTEST(test3, Dupla de Dupla);
	return 0;
	
}
